#include<bits/stdc++.h>
#define endl '\n'
#define mp make_pair
using namespace std;
inline int read(){
    int u=0,v=1;
    char ch=getchar();
    while(!isdigit(ch)){
        if(ch=='-') v=-1;
        ch=getchar();
    }
    while(isdigit(ch)){
        u=(u<<1)+(u<<3)+ch-'0';
        ch=getchar();
    }
    return u*v;
}
void print(int x){
    if(x<0){
        putchar('-');
        x=-x;
    }
    if(x>9) print(x/10);
    putchar(x%10+'0');
}
const int N=2e5+10,M=1e6+10;
int T,n,a[N],ans,lis[M],las[N];
bitset<N> f;
set<pair<int,int> > s;
inline void check(){
    int tot=0;
    for(int i=1;i<=n;i++){
        for(int j=i-1;j>=1;j--){
            if(f[i]==f[j]){
                if(a[i]==a[j]) tot+=a[i];
                break;
            }
        }
    }
    ans=max(ans,tot);
}
void dfs(int dep){
    if(dep>n){
        check();
        return;
    }
    f[dep]=1;
    dfs(dep+1);
    f[dep]=0;
    dfs(dep+1);
}
inline void check2(){
    int tot=0;
    int ii=0,jj;
    for(auto i=s.begin();i!=s.end();i++){
        ii++;
        jj=ii;
        auto j=i;
        j--;
        for(;;j--){
            jj--;
            if(f[ii]==f[jj]){
                if(a[i->second]==a[j->second]) tot+=a[i->second];
                break;
            }
        }
    }
    ans=max(ans,tot);
}
void dfs2(int dep){
    if(dep>s.size()){
        check2();
        return;
    }
    f[dep]=1;
    dfs(dep+1);
    f[dep]=0;
    dfs(dep+1);
}
int main(){
    freopen("color.in","r",stdin);
    freopen("color.out","w",stdout);
    T=read();
    while(T--){
        n=read();
        ans=0;
        int mi=INT_MAX,ma=INT_MIN;
        for(int i=1;i<=n;i++){
            a[i]=read();
            mi=max(mi,a[i]);
            ma=max(ma,a[i]);
        }
        if(n<=15){
            dfs(1);
            print(ans);
            putchar('\n');
            continue;
        }
        s.clear();
        for(int i=mi;i<=ma;i++){
            lis[i]=0;
        }
        lis[a[1]]=1;
        for(int i=2;i<=n;i++){
            if(lis[a[i]]){
                s.insert(mp(lis[a[i]],a[i]));
                s.insert(mp(i,a[i]));
            }
            lis[a[i]]=i;
        }
        dfs2(1);
        print(ans);
        putchar('\n');
    }
    return 0;
}